Data sharing

ABSTRACT

A technique for sharing data is disclosed. The technique comprises performing a search in a first application to obtain a first search result, transferring search data associated with the search to a second application, and providing, in the second application, a second search result based on the search data.

RELATED APPLICATIONS

This application is a continuation and claims priority to co-pendingU.S. patent application Ser. No. 10/729,860, entitled DATA SHARING,filed Dec. 5, 2003; which is a continuation-in-part of U.S. patentapplication Ser. No. 10/613,985, entitled MESSENGER-CONTROLLEDAPPLICATIONS IN AN INSTANT MESSAGING ENVIRONMENT, filed Jul. 2, 2003;which is a continuation-in-part of U.S. patent application Ser. No.09/930,878, entitled SHARING AND IMPLEMENTING INSTANT MESSAGINGENVIRONMENTS, filed on Aug. 15, 2001; all said patent applications areincorporated herein by reference for all purposes.

FIELD OF THE INVENTION

The present invention relates generally to data exchange. Morespecifically, a technique for sharing data between two or more users isdisclosed.

BACKGROUND OF THE INVENTION

Instant messaging has become one of the most popular applications on theInternet. Instant messaging programs generally allow users to send andreceive messages. The messages are typically generated and displayed byan instant messaging client on each end and an instant messaging servermay perform various functions to facilitate the transfer of messages forcommunication or conversation.

Software intended for implementing an instruction set in an instantmessaging environment may be generally referred to as an instantmessenger (IM) application. Existing IM applications typically allowlimited data exchanges such as the exchange of text messages. It wouldbe desirable if the users could share more information about themselvesvia IM applications in an interactive and cooperative way. It would alsobe useful if the users were not restricted to viewing exactly the samecontent such as the same web pages while sharing the information.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the invention are disclosed in the followingdetailed description and the accompanying drawings.

FIG. 1 is a block diagram illustrating an instant messaging system thatimplements instant messaging environments stored by instant messagingapplications;

FIG. 2 is a diagram illustrating how an instant messaging environment isimplemented using a browser control window;

FIG. 3 is a flow chart illustrating a process executed by an instantmessaging application when an environment identifier is received;

FIG. 4 is a flow chart illustrating in further detail a process that isexecuted when the start function is called in step 418 of FIG. 3;

FIG. 5 is a flow chart illustrating a process implemented to load anenvironment as shown in step 406 of FIG. 3;

FIG. 6 is a flow chart illustrating a process implemented to clean up anold environment;

FIG. 7 is a flow chart illustrating a process executed by the instantmessaging application in response to a user interface command;

FIG. 8A is a diagram illustrating a cartoon instant messagingenvironment;

FIG. 8B is a diagram illustrating an environment where a snow theme hasbeen implemented;

FIG. 8C is a diagram illustrating another environment where the abilityof an environment to interact with another application is illustrated;

FIG. 9A is a diagram illustrating an exemplary instant messaging systemthat implements messenger-controlled applications;

FIG. 9B is a diagram illustrating an alternative embodiment of aninstant messaging system;

FIG. 9C is a diagram illustrating another embodiment of an instantmessaging system using third-party servers;

FIG. 10 is a flow chart illustrating an exemplary process 1100 forhandling message-borne applications in an IM environment;

FIG. 11A is a flow chart illustrating the control and execution of IMapplications in an instant messaging system, in accordance with oneembodiment of the present invention;

FIG. 11B is an exemplary flow chart for implementing amessenger-controlled IM application such as a movie trailer;

FIG. 11C is another exemplary flow chart for implementing amessenger-controlled IM application which yields financial data such asa stock quote, earnings indicator, or other financial data;

FIG. 11D illustrates another exemplary flow chart for implementing amessenger-controlled IM application such as an audio file (e.g., song,recording, etc.);

FIG. 12 is a flow chart illustrating an exemplary IM application controlprocess in accordance with one embodiment of the present invention;

FIG. 13A is an exemplary user interface for controlling IM applicationsin accordance with one embodiment of the present invention;

FIG. 13B illustrates another exemplary embodiment of application area1410 for viewing content;

FIG. 13C illustrates another exemplary embodiment of application area1410 for entering a search term and performing a search based on thesearch term; and

FIG. 13D illustrates another exemplary embodiment of application area1410 for executing search functionality such as co-browsing, in an IMenvironment.

FIG. 14 is a diagram illustrating the sharing of data in an instantmessaging environment according to one embodiment.

FIG. 15 is a flowchart illustrating a process for sharing a searchaccording to one embodiment.

FIG. 16 illustrates an instant messaging application user interface usedfor performing a search, according to one embodiment.

FIG. 17 is a flowchart illustrating a process for displaying sharedsearch results according to one embodiment.

FIG. 18 is a diagram illustrating a user interface for displaying ashared search according to one embodiment.

DETAILED DESCRIPTION

The invention can be implemented in numerous ways, including as aprocess, an apparatus, a system, a composition of matter, a computerreadable medium such as a computer readable storage medium or a computernetwork wherein program instructions are sent over optical or electroniccommunication links. In this specification, these implementations, orany other form that the invention may take, may be referred to astechniques. In general, the order of the steps of disclosed processesmay be altered within the scope of the invention.

A detailed description of one or more embodiments of the invention isprovided below along with accompanying figures that illustrate theprinciples of the invention. The invention is described in connectionwith such embodiments, but the invention is not limited to anyembodiment. The scope of the invention is limited only by the claims andthe invention encompasses numerous alternatives, modifications andequivalents. Numerous specific details are set forth in the followingdescription in order to provide a thorough understanding of theinvention. These details are provided for the purpose of example andinvention may be practiced according to the claims without some or allof these specific details. For the purpose of clarity, technicalmaterial that is known in the technical fields related to the inventionhas not been described in detail so that the invention is notunnecessarily obscured.

An instant messaging environment is a shared environment which existsbetween 2 or more instant messaging users. FIG. 1 is a block diagramillustrating an instant messaging system that implements instantmessaging environments stored by instant messaging applications. Itshould be noted that, while this description refers extensively toinstant messaging environments, the disclosed environments are alsoapplied to other messaging systems. In general, an instant messagingsystem refers to any real time or near real time messaging orinformation exchange system. Many such systems will buffer messages sentto a participant who is temporarily unavailable or offline. Anotification may be sent to the participant. An instant messagingenvironment may be specified by one instant messaging application tochange the environment or state of another instant messagingapplication. A first instant messaging client, 202 interacts with aconversation user interface 204 that displays information to andreceives messages from a user.

It should be noted that the term “application” as used herein isintended to refer to any client application, server application,distributed application, self contained application or combinationthereof. An application may be implemented in any appropriate manner,including being embedded in a chip or being loaded into memory orfirmware.

In some embodiments, the conversation user interface includes aconventional instant messaging window as shown in FIG. 1 with a historywindow for displaying previous messages and a new message window forcomposing new messages. In other embodiments, the conversation userinterface may be dramatically different. For example, in one embodiment,the conversation user interface of the history window is modified toresemble a cartoon interface that shows the participants in instantmessaging as comic characters or avatars having a conversation with textbubbles used to list messages back and forth. The conversation userinterface may also include multiple history windows and other menusassociated with instant messaging features such as buddy lists,formatting options, etc. Instant messaging environments as describedherein may generally be applied to any type of conversation userinterface used to display and author messages.

User interface commands are transferred from the instant messengerclient to the conversation user interface to cause the conversation userinterface to display instant messages and their correspondingenvironment to the user. For example, an append command is used to senda new message received from another instant messaging application to theconversation user interface. The append command may simply cause thereceived message to be added to a history window if a genericenvironment is selected. It should be noted that the phrase “userinterface commands” as used herein is intended to encompass anyfunctions, behaviors, actions, capabilities, etc. that are features ofthe user interface or the instant messaging window.

Other instant messaging environments may cause the append command tobehave in different manners. For example, in the cartoon instantmessaging environment, the append command would cause the last textbubble generated for the character corresponding to the message senderto disappear and for a new text bubble containing the current message tobe created. Thus, the selected environment affects the state of theinstant messaging application so that a user interface command specifiedby the instant messaging client may have different effects depending onthe selected environment. A number of different environments may bestored in a cache 206.

In discussing the example shown, for the purpose of explanation, instantmessaging client 202 will be described as sending a message to instantmessaging client 212. In general, the two instant messaging clients willboth send and receive messages in turn. Instant messaging client 202sends a message that includes an environment identifier along with themessage over the Internet. Throughout this specification, the Internetis referred to as a medium over which messages are sent. The disclosedsystem also operates over any other appropriate network or internetworkincluding wireless networks, proprietary networks, intranets, local areanetworks, or wide area networks. In one embodiment, instant messagingserver 214 receives a message, processes the message and transfers themessage to instant messaging client 212. In other embodiments, a peer topeer messaging system is implemented in which an instant messagingserver need not necessarily become involved in transferring messagesbetween instant messaging clients.

If a messaging server does process messages, then the messaging servermay perform certain checks to determine whether the environmentidentifier as specified along with the message corresponds to a validenvironment. In some embodiments, environments may expire as a result ofa sponsorship or other type of agreement to maintain the environmentlapsing.

The message along with the environment identifier is received by instantmessaging client 212. Instant messaging client 212 also stores in acache 220 various environments that it has obtained in the past. Instantmessaging client 212 searches the cache for an environment thatcorresponds to the environment identifier received from instantmessaging client 202. If a corresponding environment is found, theninstant messaging client 212 changes the environment currentlyimplemented by it.

The current environment affects how user interface commands sent frominstant messaging client 212 to conversation user interface 216 areprocessed. In one embodiment, the instant messaging client may checkwhether or not an environment has expired before it implements thatenvironment. If an environment has expired, then the instant messagingclient may retrieve an updated environment from the instant messagingserver or another specified source via the network.

FIG. 2 is a diagram illustrating how an instant messaging environment isimplemented using a browser control window. It should be noted that abrowser control window as used herein is intended to refer to anyprogram control or set of controls that can interpret and renderscripted pages. Also, any other appropriate system for renderinginformation may be used. Instant messaging window 300 is configured in asimilar manner as a conventional instant messaging window with a TOfield, a FROM field, and various function and menu buttons surrounding ahistory window 302. However, history window 302 is implemented in anunconventional manner. History window 302 is implemented using code in abrowser control that processes an HTML file which contains theformatting for the history window and controls the appearance of theinstant messaging cache that appears therein.

In one embodiment, the instant messaging environment is implemented byloading into memory one or more JavaScript objects that implementmethods and behaviors that override the history window's default methodsand behaviors. Of course, objects may be written in any appropriateprogramming language or system, such as ActiveX. In another embodiment,an Iframe that is not visible to the user includes JavaScript thatimplements the instant messaging environment. For example, if a messageis received by the instant messaging client and an append function iscalled to add that message to the history window, then the environmentembedded in the JavaScript code alters the way the browser controlprocesses the append function. For example, the JavaScript may include adifferent version of the append function that causes text to be appendedin a different manner than it would normally be appended if noenvironment were implemented by the code in the browser control. Itshould be noted that loading a JavaScript object without using an Iframeis generally preferred over the Iframe implementation for the sake ofspeed. This description refers to both implementations and it should benoted that when one implementation is referenced, that the otherimplementation (or any reasonable alternative implementation) may beused in different embodiments.

Once the code in the browser control has executed the modified appendfunction contained in the environment, the environment may either allowthe normal append function to be subsequently executed or may indicatethat the normal append function should not be executed, essentiallyreplacing the normal append function with the modified version. Forexample, an environment may cause a sound or visual effect to occurevery time a new line is appended to the history window. In such a case,the environment would cause the browser control upon receiving theappend function to first execute some JavaScript that would play thesound or create the visual effect and then return to the normal appendfunction for the text to be appended in a conventional manner. Inanother example, such as the one described above where the historywindow includes cartoon characters and text bubbles that contain theappended text, the normal append function would be replaced by theappend function contained in the environment and the normal appendfunction would not be called upon completion of the executed environmentcode.

Thus, implementing code in a browser control within an instant messagingwindow that renders an HTML allows user interface commands to beredefined. Different environments are stored simply as different sets ofcode. The JavaScript contained in the environment redefines certaincommands or functions by executing additional commands and then eithercalling or not calling the original function as desired.

It is important to note that, while the above described JavaScript codeimplementation of instant messaging environments has significantadvantages, it is by no means the only manner in which instant messagingenvironments are implemented. In different embodiments, instantmessaging environments are implemented by using different codestructures. In general, a certain set of code representing theenvironment is accessed by the instant messaging application. The set ofcode is loaded in response to the specification of an instant messagingenvironment identifier by another instant messaging application. Theenvironment may also be specified by the user of the application. By wayof example and without limitation, instant messaging environments may beimplemented using the wireless application protocol, XML, VRML, or anyother appropriate public or private standard.

The specified environment alters the response of the instant messagingapplication to actions performed by the user. As shown in FIG. 1, in oneembodiment, this alteration occurs by redefining commands or functionssent from the instant messaging client to the conversation userinterface. As explained further in FIG. 2, in one embodiment, this maybe implemented by using a browser control to render a history window andloading a JavaScript object that includes the function definitions. Itshould be apparent that many alternatives exist for implementing thissystem in a similar manner.

As a further example, another function that may be redefined is thescroll function. The user may indicate by dragging the mouse over anarrow button in the instant messaging window or by some other convenientmeans that he would like to scroll the history window. When such ascroll command is received, then a check is first made to determinewhether or not the scroll command has been redefined by a loadedenvironment. For example, an environment may contain a watermark that isintended to always show up in the history window. In such a case, thescroll function would be redefined so that the watermark does not scrollwithin the window while the rest of the text inside the window doesscroll.

As shown in FIG. 1, environment identifiers are passed between instantmessaging applications by including an environment identifier along witheach message. In one embodiment, there is a default environmentidentifier that is automatically passed between instant messagingapplications if no environment has been specified by either of theusers. Once one of the users specifies an environment, if the other useraccepts the environment then that user will then pass the acceptedenvironment identifier back to the user that originally specified theenvironment identifier, thus maintaining the environment. Environmentsmay be selected by users in a variety of ways. For example, audio orvideo user inputs may be processed or used to select or modify anenvironment. Also, a robot or other program communicating with a usermay select or modify an environment. Other context information about theuser's system, a specified default environment or set of environments,or message content may select or modify an environment. One environmentmay select or modify another environment and a central instant messagingserver may itself specify or modify an environment.

If an instant messaging application passes an environment identifierthat is not accepted by the receiving instant messaging application,then the receiving instant messaging application will send back thedefault environment identifier and the sending instant messagingapplication may either change back to the default environment ormaintain its own environment according to how it is configured. Thus,the instant messaging environment is either maintained or changed witheach message passed back and forth containing an environment identifier.

FIG. 3 is a flow chart illustrating a process executed by an instantmessaging application when an environment identifier is received. Theenvironment identifier is received in step 400. Next, in step 402, it isdetermined whether the sender of the identifier is an authorized sender.In one embodiment, this is determined by whether the sender is a memberof a buddy list or other list maintained by the receiver of partieseligible to send environment identifiers and change the environment ofthe recipient's instant messaging application. If the sender is notauthorized, then control is transferred to step 420 and the message isdisplayed.

If the sender is authorized, then control is transferred to step 404 andit is determined whether the environment is already cached by thereceiving instant messaging application. If the environment is notcached by the receiving instant messaging application, then control istransferred to a step 406 where the environment is fetched. In oneembodiment, the environment is loaded by accessing a website that makesenvironments available for download. The environment identifier may besent to the website to identify the environment to be downloaded. Inother embodiments, the environment may be obtained from the sender andan authentication code or signature may be used to verify the integrityof the environment. Once the environment is downloaded, then control istransferred to step 410. If the environment is in the cache, thencontrol is transferred from step 404 to step 408 and it is determinedwhether the environment has expired.

In one embodiment, environments that are not found in a local cache areobtained from a secure source, such as a trusted website. This securemode of distribution prevents parties from using environments forhostile purposes. Since instant messaging participants merely refer toenvironments and the referred to environments are separately obtainedfrom a trusted source, participants do not intentionally orinadvertently send damaging environments to each other.

In one embodiment, whenever an environment is downloaded by an instantmessaging application, an expiration date is also provided to theinstant messaging application so that the instant messaging applicationcan determine if the environment has expired. In another embodiment, theinstant messaging application is required to always check with aninstant messaging server to determine whether an environment has expiredbefore that environment is implemented.

If the environment has expired, then control is transferred to step 406and the environment is loaded. If the environment has not expired, thencontrol is transferred to step 410 and an instant messaging window isopened if an instant messaging window is currently not open. Control isthen transferred to step 412 where it is determined whether a differentenvironment has been specified by the received environment identifier.If a different environment has not been specified, then the currentlyloaded environment may continue to be used and control is transferred tostep 420 where the message is displayed.

If the environment is different, then control is transferred to step 414and a clean up function is called for the old environment. Control isthen transferred to step 416 and the new environment is loaded intomemory. Next, in step 418, the start function is called for the newenvironment so that any code that should be executed when the newenvironment is loaded is executed. Control is then transferred to step420 and the message is displayed. The process ends at 422.

In one embodiment, an environment is downloaded from a website byreceiving a series of different types of files. The first type of fileis an initialization file that contains information regarding theenvironment that the instant messenger application can access withoutactually loading the environment. The initialization file may containitems such as a display name that determines how the environment will belisted in a formatting tool bar used to select environments and anexpiration that can be used by the instant messaging application todetermine that the environment is invalid and initiate a download of anupdated version of the environment.

The second type of file is the actual environment program file thatcontains, in one embodiment, encoded JavaScript that defines how theenvironment looks and behaves. The third type of file generallydownloaded is media file such as an image file, video clip, animation,sound clip, etc. that provides images or other media that are generallyused by the environment. In different embodiments, the different typesof files are encrypted or compressed either together or separately andencapsulated or signed as is deemed appropriate. The files may be senttogether using the .zip or the .cab or other archive or compressionformat, if desired. Preferably, at least the JavaScript objects areencrypted.

FIG. 4 is a flow chart illustrating in further detail a process that isexecuted when the start function is called in step 418 of FIG. 3. Theprocess begins at 500. In step 502, the background, color and style ofthe instant messaging window is changed to the background, color andstyle of the environment that has been selected. In step 504, the bodyof text is erased. It should be noted that in some environments, thebody of text may not be erased but in other environments the body oftext may need to be erased. For example, in the cartoon environmentshown above, only the current message being conveyed is shown in a textbubble. Next, in step 506, any images and watermarks associated with theenvironment are loaded. Then, in step 508, any overriding user interfacefunctions are loaded so that when a user interface command is received,the function called by the command may be changed to the functionspecified by the instant messaging environment. In step 509, anyanimations (such as falling snowflakes as shown below) associated withthe environment are started. The process ends at 510.

FIG. 5 is a flow chart illustrating a process implemented to load anenvironment as shown in step 406 of FIG. 3. The process starts at 600.In a step 602, the application logs on to a website that includesenvironments available for download. In step 604, the applicationspecifies an environment to be downloaded. In one embodiment, the sameenvironment identifier used by applications to identify environments toeach other is used to identify an environment to download. In a step606, the environment is downloaded. The environment is stored in step608. The process ends at 610.

Requiring that the instant messaging environment be downloaded from oneor more central sites enables editorial control to be exercised over theenvironments that are sent to users. Obscene environments or otherundesirable environments can be avoided. Also, viruses and othermalicious code can be excluded. In certain embodiments, users may beallowed to create environments and send them to other users, but it isan important feature that in some embodiments, there is at least onemode where environments are only downloaded from a trusted or controlledsource that ensures security and, if desired, some control over content.One important use of instant messaging environments is advertising. Whenan instant messaging environment includes an ad, controlling the sourceof the environment facilitates tracking of the environment use as wellas making sure that the environment is not altered.

It should be noted that when the environment is downloaded, data in theinitialization file for the environment may be separately stored in atable or system registry so that information about loaded environmentsmay be readily accessed by the instant messaging application withoutopening files. For example, if an expiration date is associated with theenvironment, then that date may be written into an expiration table sothat the instant messaging application can periodically perform clean upand delete expired environments or check before an environment isaccessed whether or not it has expired. Likewise, the names of variousdownload environments may be stored in a single table used to create alist of environments for a menu that facilitates the selection ofenvironments by a user.

FIG. 6 is a flow chart illustrating a process implemented to clean up anold environment. The process starts at 700. In a step 702, the instantmessaging window is restored to a default state. That may involve, forexample deleting a watermark created by the old environment. The defaultstate may include a default background color, font, style, etc. In step704, any animations or other routines are stopped. In a step 706redefined functions that replace user interface commands are unloaded.The process then ends at 708. It should be noted that other clean upoperations may typically be included in a clean up process.

FIG. 7 is a flow chart illustrating a process executed by the instantmessaging application in response to a user interface command. Theprocess starts at 800 when the user interface command is received. Instep 802, it is determined whether an overriding or modified functionhas been defined by the currently loaded environment. If no overridingfunction is defined, then control is transferred to a step 808 and theoriginal function is executed. If an overriding or modified functiondoes exist, then control is transferred to step 804 and the overridingfunction is executed. Control is then transferred to a step 806 where itis determined whether the overriding function has set the originalfunction to execute once it has been completed. If the original functionis to execute, then control is transferred to step 808 and the originalfunction is executed. If the original function is not to be executed,then control is transferred to step 810 and the process ends.

Sending environment identifiers between instant messaging applicationsand using the environment identifiers to change the environment of areceiving application has been described. Once this capability ofredefining user interface command functions, executing animations andcreating event driven actions to occur in an instant messaging windowhas been enabled, a rich variety of environments can be defined forinstant messaging applications. Some examples of instant messagingenvironments that may be created are provided in FIGS. 9A through 9C.

FIG. 8A is a diagram illustrating a cartoon instant messagingenvironment such as the one described above. Characters 902 and 904represent participants in the instant messaging session and text bubbles906 and 908 display the last message sent by each of the participants.This environment is implemented by redefining the append function todelete an existing text bubble above the character representing thesender of the text message and then insert the message being sent into anew text bubble. In addition, the start function of the environmentdeletes all text in the history window and draws in the characters thatare part of the cartoon. In addition, a watermark 910 is provided thatshows the name of the cartoon that is the theme of the environment. Inmany embodiments, the watermark also functions as a link so that a usermay link to a website related to the environment. This technique isespecially useful when the environment is part of an ad campaign.

The instant messaging server may track statistics about environments forvarious reasons. For example, if an environment has an advertisementtheme associated with it, then each time the environment is specified bya user to another user that event may be counted by the server so thatad revenue can be generated. In addition, when certain functions withinthe environment are called as a result of events, the instant messagingserver may record such occurrences as well and those events may alsogenerate ad revenue.

FIG. 8B is a diagram illustrating an environment where a snow theme hasbeen implemented. Animated snowflakes 920 fall down the window so longas the environment is active. In addition, a watermark 922 is presentthat provides a link to a site related to snow. Also, when the ring orbuzzer function is called by one of the users, then instead of thegeneral ringing, a snowman 924 appears and flashes. Also, when certaintext is typed in the window such as the word cloud, a cloud 926 appears.

FIG. 8C is a diagram illustrating another environment where the abilityof an environment to interact with another application is illustrated.In the environment shown, a stock ticker obtains information from eitherthe instant messaging program, a browser, or other program that makesstock information available to user. In addition, the environmentincludes a finance watermark link that directs the user to a financialsite. In this environment, when the environment is loaded, a function isperiodically executed that checks for data from the stock tickerapplication. In addition, environments can communicate information toother environments by sending messages. Also, environments can readcertain information available to a messenger program such as a buddylist or in some cases stock quote information.

FIG. 9A is a diagram illustrating an exemplary instant messaging system1000 that implements messenger-controlled applications.Messenger-controlled applications may also be referred to generally asinstant messaging or IM applications. As described above in connectionwith FIG. 1, instant messaging (IM) clients 202 are shown using theInternet for transferring data. Clients, referring to end userapplications or instant messaging user applications, provide animplementation environment for messenger-controlled or IM applications.Conversation user interfaces (UI) 204 provide users with interfaces forcreating, reviewing, editing, or modifying content to send between IMclients 202. In the embodiment shown, an IM application may be executedbetween IM clients 202 using an IM message. This will be described infurther detail below. As described in FIG. 1, IM environments are storedin cache 206. Also provided are IM application servers 1002 forimplementing IM applications as will be described below. Also generally,an IM application is any application implemented in an instant messagingenvironment.

FIG. 9B is a diagram illustrating an alternative embodiment of aninstant messaging system. Also communicating over the Internet, IMclients 1006, 1008 implement IM environments 1010, 1012. IM applications1014, 1016 can be implemented over IM environments 1010, 1012. An IMsession is executed using conversation interfaces 1018, 1020.

FIG. 9C is a diagram illustrating another embodiment of an instantmessaging system using third-party servers. IM clients/networking layers1022, 1024 can implement IM environments 1026 and 1028, also executingIM applications which may be stored on third-party servers 1030, 1032,1034, and 1036. Similarly, an IM session may be controlled or managedusing client conversation user interfaces, similar to the conversationinterfaces 1018, 1020 in FIG. 9B.

FIG. 10 is a flow chart illustrating an exemplary process 1100 forhandling message-controlled applications in an IM environment. In thepreferred embodiment, data and information passed between users in theform of a message. Applications and data may also be considered“messages” and can be passed between IM clients 202 as “IM messages.” Instep 1102, handlers in IM clients 202 receive messages. IM environmentsthen evaluate the received message and determine an appropriate actionfor user and IM messages, as shown in step 1104. In step 1106, IMenvironments determine whether the message is an IM message. IM messagesrefer to messages useful in the execution and operation of IMapplications. Conversely, messages between users (user messages) referto communication messages between end users engaged in an IM session.

If an IM message is determined above, then an IM application (i.e. movietrailer, video, etc.) is executed. If the message is not an IM message,then IM environments determine whether the message is a user message instep 1110. If the message is a user message, then the message isdisplayed via IM client 202 on conversation user interface 204. If themessage is neither an IM message nor a user message, then error handlingis invoked, in step 1114.

FIG. 11A is a flow chart illustrating the control and execution of IMapplications in an instant messaging system, in accordance with oneembodiment of the present invention. In step 1202, IM client 202 (FIG. 1or 10) evaluates an IM message. From the IM message, the IM client 202determines the application type (i.e., movie trailer, game, animatedcartoon, advertisement, Flash presentation, etc.) in step 1204. Using anidentifier, the IM application is retrieved in step 1206. In step 1208,a decision is made as to whether a supporting application is requiredsuch as a media player (Real Player, Windows Media Player), contentviewer (Adobe Illustrator, Reader, etc.), or other media-based displayapplication. If required, the supporting application is launched in step1210. If a supporting application is not required or if the supportingapplication has been launched, then the IM application isimplemented/executed in step 1212. Alternative embodiments pertinent tothe type of IM application implemented are shown in FIGS. 12B through12D.

In FIG. 11B, an exemplary flow chart for implementing amessenger-controlled IM application such as a movie trailer is shown. Instep 1222, the IM client 202 is directed to retrieve the identified IMapplication (e.g., a movie trailer) from a movie server such as IMapplication server 1002 (FIG. 9). A movie trailer identifier is passedto the movie server in step 1224. Based upon the identifier, a movietrailer or set of movie trailers may be retrieved in step 1226. Uponretrieving the movie trailer, IM client 202 then returns to step 1208(FIG. 11A).

FIG. 11C illustrates another exemplary flow chart for implementing amessenger-controlled IM application which yields financial data such asa stock quote, earnings indicator, or other financial data. In step1232, IM client 202 can be implemented using a server, database, RAID,storage disk, repository, etc. where the financial data application isstored. An identifier is passed, which identifies the specific financialdata to be retrieved, such as a stock quote, public earnings figure, orother similar data in step 1234. The financial data is retrieved in step1236 using the identifier passed by IM client 202.

FIG. 11D illustrates another exemplary flow chart for implementing amessenger-controlled IM application such as an audio file (e.g., song,recording, etc.). IM client 202 is directed to an audio server storingfiles of music, songs, recordings, etc. in various formats such as WAVfiles, MPEG3 files, etc. Passing an identifier to the audio server(i.e., IM application server 1002), IM client 202 can retrieve an audiofile in step 1246. Subsequently, IM client 202 continues at step 1208 ofthe process illustrated in FIG. 11A.

FIG. 12 is a flow chart illustrating an exemplary IM application controlprocess in accordance with one embodiment of the present invention. Instep 1302, a user can direct IM client 202 to implement a controlfeature which will control an IM application. In the context of FIG. 12,a control message is similar to the above-discussed IM message. IMenvironment creates a control message in step 1304. The control messageis sent to IM client 202 which implements the requested IM application,in step 1306.

FIG. 13A is an exemplary user interface for controlling IM applicationsin accordance with one embodiment of the present invention. A computermonitor screen 1400 is shown, containing a history window 1402. Historywindow 1402 is similar to the history window 302 illustrated anddiscussed above in connection with FIG. 2. Within history window 302,browser control elements and features are shown. For example, in theembodiment shown several framed areas are provided. In the embodimentshown, several I-frames are provided including a conversation area 1404,content window 1406, a link frame 1408 and an application area 1410.

Control features such as those discussed in connection with the processflow chart of FIG. 12 may be included in any of the frames/windowsshown. For example, in application area 1410, a graphic link may beprovided which, when directed, executes an application which plays amovie trailer (in accordance with the process described above for FIG.11B). In another example, a stock “ticker” may be played in applicationarea 1410, displaying company symbols and financial stock quotes. Userscan control IM applications using an interface similar to that shown inFIG. 13A (1400). In other embodiments, other techniques are used toimplement control of messaging applications other than those describedhere and the embodiments listed above are intended to be neithercomprehensive or inclusive of other applications that may be controlledfrom an IM environment.

FIG. 13B illustrates another exemplary embodiment of application area1410 for viewing content. A viewer window 1414 is provided for viewingor displaying content such as a movie trailer, film clip, animated storyor advertisement, or video file in any of a number of formats including,but not limited to, MPEG4, Macromedia Flash, etc. A viewer button 1416is provided which, when depressed, will launch an appropriateviewer/player, rendering the IM application/content for display to theuser.

FIG. 13C illustrates another exemplary embodiment of application area1410 for entering a search term and performing a search based on thesearch term. In search term frame 1418, a user may enter a search term.After depressing search button 1420, an IM application is launched whichexecutes the desired search based on the entered search term, returningand rendering the results in a frame on interface 1400. The frame mayinclude, but is not limited to those shown in FIG. 13A. For example,returned search results may be included in content window 1406,application area 1410, or conversation area 1410. Search results andterms may be placed in frames other than those shown in the embodimentsdescribed herein.

FIG. 13D illustrates another exemplary embodiment of application area1410 for executing enhanced functionality such as co-browsing in an IMenvironment. Co-browsing, or two or more users browsing for onlinecontent while engaged in an IM environment, is provided for as amessenger-controlled IM application. URL/domain frame 1422 is configuredto received a URL or domain name for pointing an IM application such asa web browser to a particular Internet or website. In one embodiment,the IM environment may launch a web browser once the co-browse button1424 is depressed. Once a co-browsing session has been initiated, two ormore users will be directed to the same Internet or website based uponthe destination URL/domain name entered into URL/domain frame 1422.Browsers such as those provided by Microsoft (Internet Explorer),Netscape (Navigator), etc. may be used. Other internet browsingapplications are used in other embodiments.

Control of IM applications such as co-searching, co-browsing, networkedgames, shared videos or audio files may be implemented in an automatic,semi-automatic, or manual manner. Information related to the control ofIM applications uses IM messages which, when passed between IM clients,causes particular actions/interactions to occur between two or more IMusers. The IM messages enable and control IM applications, which iswidely varied in terms of functionality and user interactivity. IMapplications may include co-searching, co-browsing, site navigation,co-drawing, media sharing (e.g., video, music, animation, photos, etc.),games, and activities in other embodiments. The IM applications can behosted on servers communicating with the instant messaging clients,which may be operated by a variety of entities such as a contentdeveloper, hosted service, service provider, etc.

The following examples illustrate more embodiments of data sharingbetween IM applications. As used herein, the term “application” isintended to refer to any client application, server application,distributed application, self contained application or combinationthereof. An application may be implemented in any appropriate manner,including being embedded in a chip or being loaded into memory orfirmware. While this description refers extensively to instant messagingapplications, the disclosed techniques can also be applied to othermessaging applications or systems in different embodiments. In general,an instant messaging application refers to any real-time or nearreal-time messaging or information exchange application such as mobilephone messaging, wireless device messaging, etc. Instant messagingapplications include applications that buffer messages sent to aparticipant who is temporarily unavailable or offline.

The techniques are applicable to messaging applications running on avariety of devices, including personal computers, handheld devices,mobile telephones, wireless devices or any other appropriate platformsand/or systems. Throughout this specification, for ease of reference,the Internet is referred to as a medium over which messages are sent,although other mediums can also be used. The disclosed system alsooperates over any other appropriate network or internetwork includingwireless networks, proprietary networks, intranets, local area networks,or wide area networks.

FIG. 14 is a diagram illustrating the sharing of data in an instantmessaging environment according to one embodiment. In this example, UserA and User B communicate with each other using IM applications 1500 and1502 respectively. The IM environment provides the users with acooperative experience without requiring the users to view exactly thesame content. In the following examples, techniques for cooperativesearches are discussed in detail for the purposes of illustration. Thesame techniques are also applicable to other cooperative IM functionssuch as co-browsing or co-gaming. Also for the purposes of illustration,in the following examples, User A initiates a search and shares thesearch with User B, although the same techniques can be applied to asearch initiated and shared by User B or any other users.

In this example, User A uses his IM application to send a search requestto a server 1504. The server may be a database server, an applicationserver, a search engine, or any other appropriate systems that canprovide a response to the search request. The server may also be acluster server that includes multiple machines. In some embodiments,server 1504 directly provides a search result in response to the searchrequest. In some embodiments, server 1504 functions as a gateway orinterface for the search. In these systems, server 1504 relays therequest to another server or device that provides the search results,and relays the response provided by the other device to the IMapplication that makes the request. User A can share the search withUser B by sending search data from IM application 1500 to IM application1502. The search data includes information associated with the searchresults and is discussed in more detail below. Similarly, if User Bchooses to share a search with User A, search data is then sent from IMapplication 1502 to IM application 1500.

FIG. 15 is a flowchart illustrating a process for sharing a searchaccording to one embodiment. In this example, an IM session is started(1600). An IM session may be started, for example, by exchanging amessage between the two users. While the IM session is in progress, UserA performs a search (1602). In some embodiments, User A enters a searchterm in his IM application. The search term may include one or morewords, phrases, or any other appropriate symbols or notations that canbe used to conduct a search. The search term is transferred to a serversuch as server 1504 shown in FIG. 14. A response that includes theresults of the search is transferred from the server to User A's IMapplication. The IM application may reformat the search results receivedand display the search results to User A.

User A then chooses to share the search with User B (1604). Search datais transferred from User A's IM application to User B's IM application(1606). The search data includes information that allows User B's IMapplication to obtain approximately the same search results as the onesshown to User A. The search data includes the search results obtained byUser A's IM application in some embodiments, and the search results aredisplayed on User B's IM application directly. Preferably, the searchdata includes a compressed representation of the search results. Acompressed representation of the search result refers to a relativelysmall amount of data that can be used to recover or reconstructapproximately the same search results. In some examples, the compressedrepresentation includes the search term. In some embodiments, thecompressed representation includes identifiers for the items found inthe search result. The compressed representation of the search resultsincludes fewer bytes than the search result in most situations, althoughthere are exceptions when the size of the compressed representation isgreater than the search results. For example, the search term may belong and there may be few items in the search result.

FIG. 16 illustrates an instant messaging application user interface usedfor performing a search, according to one embodiment. In this example,user interface display 1700 includes a conversation area 1702 and a userspecific area 1704. Conversation area 1702 displays the conversationbetween the two users. User specific area 1704 provides contexts such asbrowsing, shopping, participating in auctions, researching stocks, etc.that are controlled by the user of the IM application. The user mayselect and use a context while the conversation is in progress. In thisexample, User A selects the shopping context and enters a search term“dog”. The search term is sent to a shopping server, which matches thesearch term with items available for sale. In this example, the itemsare displayed as hyperlinks such as “pets: dog”, “dog toys”, “dog food”,etc. The user may obtain more information about the item by selectingits corresponding hyperlink. For example, selecting a link of an itemmay cause a web page associated with the item to be displayed. In someembodiments, the IM application cooperates with an e-commerce server,giving the user the ability to put items in the shopping cart byclicking on the item displayed. User A may choose to share the searchwith User B by selecting a “share all” button 1706. In this embodiment,rather than sending the search results to User B, the search term “dogs”is included in the search data sent to User B. This compressedrepresentation reduces the amount of data to be transferred to User B,and allows the most up-to-date search result information to be displayedfor User B later. In some embodiments, rather than sharing the entiresearch, User A can selectively share individual items.

User A can also choose to save the search. In some embodiments, theinformation is saved on User A's device locally. In some embodiments,the information is saved on a server. In some embodiments, the sameinformation included in the search data is saved. In this example,selecting “save all” button 1708 saves the search term “dog”. If User Alater wants to view the search results for dogs, he can select the savedsearch. A new search using the saved search term is then performed andthe most up-to-date information is displayed. In some embodiments, UserA can selectively save individual items in the search results.

FIG. 17 is a flowchart illustrating a process for displaying sharedsearch results according to one embodiment. In this example, search datais transferred from User A's IM application and received by User B's IMapplication (1800). A notification is displayed to User B, indicating toUser B that User A wishes to share a search (1802). User B is given theoption to view the search (1804). If User B chooses to view the search,a new search is performed using information in the search data, such asthe search term (1806). The search results are then displayed to User B(1808). If User B does not choose to view the search, no additional stepis required and the search results are not displayed (1810).

FIG. 18 is a diagram illustrating a user interface for displaying ashared search according to one embodiment. In this example, uponreceiving the search data (1800 of FIG. 17), User B's IM applicationcreates a pop up window 1902. Window 1902 shows User B a notification,indicating to User B that User A would like to show User B informationon “dogs” (1802). In the example shown, the search term “dogs” isembedded in the notification as a hyperlink to the server. In someembodiments, the notification may include a URL. For example, if User Achooses to share a single item rather than the entire search, the URLfor the item is then transferred to User B and displayed in thenotification. In some embodiments, once User B selects the URL, User Aand User B enter a co-browsing mode to view the same web page.

User B may choose to view details of the search by clicking on the “OK”button or the search term “dogs” (1804). If User B clicks on OK or onthe search term “dogs”, a new search based on the search term “dogs” isthen performed by sending the search term to a server such as server1504 shown in FIG. 14. The search results are then displayed to User Bin window 1900.

The techniques discussed above are applicable to other aspects of the IMenvironment besides shopping. For example, users may share their searchresults in stocks, auction, news, movies or any other IM applicationcontexts or categories that allow for search. The search data in someembodiments includes an indicator that identifies the search category.The IM application of the search data recipient can obtain the searchresults by performing a search according to the category correspondingto the indicator.

Techniques for sharing data have been described. In addition to beingused in instant messaging sessions between two users, the techniquesdescribed herein are also applicable to instant messaging or chatsessions that include three or more users.

Although the foregoing embodiments have been described in some detailfor purposes of clarity of understanding, the invention is not limitedto the details provided. There are many alternative ways of implementingthe invention. The disclosed embodiments are illustrative and notrestrictive.

1. A method of performing a search, said method comprising: receivinguser input that specifies: a) a search context; and b) a search query;based on the search context, selecting which server of a plurality ofavailable servers to send the search query to; and sending the searchquery to the selected server.
 2. The method of claim 1, furthercomprising presenting an instant messaging user interface; and whereinthe step of receiving user input includes receiving the user inputthrough controls on said user interface.
 3. The method of claim 2,further comprising: receiving search results for the search query; andpresenting the search results in the instant messaging user interface.4. The method of claim 3, further comprising: presenting a control inthe instant messaging user interface, wherein the instant messaging userinterface is on a first client; and wherein the control, which whenselected, shares the search results with an instant messaging userinterface on a second client.
 5. The method of claim 2, furthercomprising displaying a user conversation in a user conversation area ofthe instant messaging user interface.
 6. The method of claim 3, inresponse to a selection of one of the search results, sending a messageto the selected server indicating which of the search results wasselected.
 7. The method of claim 6, wherein the message furtherindicates that the selected search result is to be put into a shoppingcart.
 8. The method of claim 1, wherein the search context relates toshopping.
 9. The method of claim 1, wherein the search context relatesto auctions.
 10. The method of claim 1, wherein the search contextrelates to stocks.
 11. A method comprising: presenting an instantmessaging user interface comprising a plurality of controls forselecting different search contexts; receiving, in the user interface, aselection of a particular context; receiving a search query in the userinterface; based on the particular context, selecting a server of aplurality of available servers to send the search query to; sending thesearch query to the selected server; receiving a search result from theselected server; and presenting the search result in the instantmessaging user interface.
 12. The method of claim 11, further comprisingpresenting a control in the instant messaging user interface, whereinthe instant messaging user interface is on a first client; and whereinthe control, which when selected, shares the search results with aninstant messaging user interface on a second client.
 13. The method ofclaim 11, further comprising presenting a control in the instantmessaging user interface, wherein the instant messaging user interfaceis on a first client; and wherein the control, which when selected,shares the search query with an instant messaging user interface on asecond client.
 14. The method of claim 13, wherein the second client isable to obtain a search result based on the search query that isapproximately the same as the search result presented in the instantmessaging user interface at the first client.
 15. The method of claim14, further comprising sending the particular context from the firstclient to the second client to allow the second client to obtainapproximately the same search result based on the search query and theparticular context.